// 从 @umijs/max 模块中导入 request 函数，用于发起 HTTP 请求
import { request } from "@umijs/max";

/**
 * 异步获取权限列表
 * @param params - 分页参数，类型为 API.PageParams
 * @returns 返回一个 Promise，解析为 API.Page<API.Permission> 类型的数据，包含分页后的权限列表
 */
export async function getPermissionList(params: API.PageParams) {
    // 发送 GET 请求到 /api/system/permission 接口，并传递分页参数
    return request<API.Page<API.Permission>>('/api/system/permission', {
        params,
    });
}

/**
 * 异步添加新的权限
 * @param data - 要添加的权限信息，类型为 API.Permission
 * @returns 返回一个 Promise，解析为 API.Result<any> 类型的数据，包含添加操作的结果
 */
export async function addPermission(data: API.Permission) {
    // 发送 POST 请求到 /api/system/permission 接口，并传递要添加的权限数据
    return request<API.Result<any>>('/api/system/permission', {
        method: 'POST',
        data,
    });
}

/**
 * 异步更新已有的权限信息
 * @param data - 要更新的权限信息，类型为 API.Permission
 * @returns 返回一个 Promise，解析为 API.Result<any> 类型的数据，包含更新操作的结果
 */
export async function updatePermission(data: API.Permission) {
    // 发送 PUT 请求到 /api/system/permission 接口，并传递要更新的权限数据
    return request<API.Result<any>>('/api/system/permission', {
        method: 'PUT',
        data,
    });
}

/**
 * 异步删除指定 ID 的权限
 * @param id - 要删除的权限的 ID，类型为 number
 * @returns 返回一个 Promise，解析为 API.Result<any> 类型的数据，包含删除操作的结果
 */
export async function deletePermission(id: number) {
    // 发送 DELETE 请求到 /api/system/permission/{id} 接口，删除指定 ID 的权限
    return request<API.Result<any>>(`/api/system/permission/${id}`, {
        method: 'DELETE',
    });
}

/**
 * 异步获取指定 ID 的权限详情
 * @param id - 要获取详情的权限的 ID，类型为 number
 * @returns 返回一个 Promise，解析为 API.Result<API.Permission> 类型的数据，包含指定权限的详细信息
 */
export async function getPermission(id: number) {
    // 发送 GET 请求到 /api/system/permission/{id} 接口，获取指定 ID 的权限详情
    return request<API.Result<API.Permission>>(`/api/system/permission/${id}`, {
        method: 'GET',
    });
}

/**
 * 异步获取权限树结构
 * @returns 返回一个 Promise，解析为 API.Result<API.Permission[]> 类型的数据，包含权限树结构数据
 */
export async function getPermissionTree() {
    // 发送 GET 请求到 /api/system/permission/tree 接口，获取权限树结构数据
    return request<API.Result<API.Permission[]>>('/api/system/permission/tree', {
        method: 'GET',
    });
}

/**
 * 异步获取权限选项列表
 * @returns 返回一个 Promise，解析为 API.Result<API.Permission[]> 类型的数据，包含权限选项列表
 */
export async function getPermissionOptions() {
    // 发送 GET 请求到 /api/system/permission/options 接口，获取权限选项列表
    return request<API.Result<API.Permission[]>>('/api/system/permission/options', {
        method: 'GET',
    });
}
